1. Field of the Invention
The present invention relates to methods and apparatus for managing resources in an on-demand, memory-based server and, in particular, managing resources to control and service a large number of simultaneous streams of audio, video and or other data formats being played out to a network.
2. Background Description
Conventional on-demand systems utilize disk storage based systems that stream content to a receiving device over a network. On-demand servers obtain, store and play content such as, for example but not limited to, audio files, encoded television programming, and encoded movies to the customer. On-demand servers request content from long term storage devices such as disk arrays, disk storage farms, tape drives or other storage media, whereby content is stored across the this term storage, e.g. stored in pieces, strips or using other schemes across the disk array or RAID system. Upon request, the on-demand server loads content from the stored location such as Long Term Storage (LTS) or Near Term Storage (NTS) into a stream buffer or cache, for example, using a first-in-first-out (FIFO) buffer mechanism of the on-demand server that is assigned to the stream. The server streams content out of the FIFO buffer to the receiving device.
Conventional on-demand servers have a disadvantage in their reliance on disk access to support the streaming. Such systems and servers do not recognize or otherwise account for concurrent usage of the same streaming content. On-demand servers are configured and rated to operate on a one-to-one (1:1) ratio, whereby the rating is based on output streams showing the capacity of receiving and streaming an on-demand request by a customer. The design of present on-demand servers also have the disadvantage of increased implementation cost per stream due, in part, to increased hardware elements required, built in redundancies of the implementation, and the inability to detect and support concurrent streaming of content.
Conventional on-demand servers also have disadvantages relating to limited internal memory that can be used for streaming. This inhibits or prevents the capability to support concurrency. Concurrency is the ability to stream the same copy of content to multiple receiving devices. This is a very common usage scenario for on-demand systems. For example, this occurs when receiving devices request the same pay-per view event either simultaneously or within short time of each other. Numerous concurrent requests can reduce bandwidth and create bottlenecks in conventional on-demand servers. The on-demand server will request data from disk storage multiple times for the same content as to satisfy the receiving devices requests.
On-demand servers heretofore have sought to solve concurrency problems by creating redundant content stored on near term storage (NTS), in long term disk storage or by using optimization techniques that require manual insertion of a resident flag to mark a limited subset of specific content that should be pulled into memory. While this model is effective, it requires considerable management of the content library and does not provide a dynamic mechanism that changes based on the real time usage model. All of such optimization schemes are not as efficient and cost effective as desired.
Moreover, with the introduction of trick play support, conventional on-demand server resources are strained further by requests for trick playback functions such as fast forward, rewind, fast rewind, pause, stop and record. The problems described above are exacerbated because disk-storage-based on-demand servers offering trick play store a separate secondary data file—trick play file—to disk storage and such servers must switch to the secondary file when trick modes requested by the receiving device. Storing secondary files has disadvantages in that additional resources of the server, including but not limited to storage and processing resources, are needed to support the storage and retrieval of multiple files for a single piece of content. Simply, more disk storage, bandwidth and clock cycles are required to seek, find and stream trick files˜for example, to play the content in a fast-forward mode˜when a receiving device requests a particular function of programming being streamed to the TV and then to return to playing a separate files that represents the content streaming at normal speed. Disadvantages remain in the hardware configuration of conventional disk storage based video on-demand servers. Such hardware configurations rely on meeting a 1:1 ratio by stripping MPEG pages and controlling the process with VOD servers reassembling files for streaming to the receiving device. Trick mode files are stored as a separate data file. Clustering and redundant architectures increase overall server cost, increase the cost per stream and cost per trick mode to the end user as additional hardware is needed to support efficient playback of a large number of streams. Attempts to increasing the bandwidth has not always solved the concurrency problem in part due to inherent physical limitations of disk storage devices such as, for example, the seek time of a particular request and return of a strip of content to stream out to the network. Moreover, bottlenecks still occur when concurrency requests become to numerous so as to strain server resources, or cause them to fail, resulting in content not being provided on-demand to a receiving device As a result, a solution is needed to these problems so as to improve the concurrent streaming of content from on-demand servers.
Accordingly there is a need for an on-demand server that can dynamically control and optimize memory utilization while minimizing access to disk storage. There also is a need for a method and system that removes the resident marking requirement of conventional on-demand systems. Additionally, there is a need for a method and system that eliminates creating separate files for trick playback of content streamed to a customer. Finally, there is a need for a method and system that dynamically uses the current concurrency count of the contents to optimize memory utilization so as to swap content in and out of memory as the concurrency values change. The present invention therefore in conjunction with an memory-based on-demand server provides advantages of optimizing the usage of server resources.